// saying2.cpp -- using pointers t objects
// compile with string.cpp

#include <iostream>
#include <cstdlib>  // (or stdlib.h) for rand(), srand()
#include <ctime>    // (or time.h) for time()
#include "String.h"

const int ArSize = 10;
const int MaxLen = 81;

int main() {
    using namespace std;
    String name;
    cout << "Hi, what's you name?\n>> ";
    cin >> name;

    cout << name << ", please enter up to " << ArSize
         << " short sayings <empty line to quit>:\n";
    String sayings[ArSize]; // array of objects
    char temp[MaxLen];  // temporary string storage
    int i;
    for (i = 0; i < ArSize; ++i) {
        cout << i + 1 << ": ";
        cin.get(temp, MaxLen);
        while (cin && cin.get() != '\n')
            continue;
        if (!cin || temp[0] == '\0')    // empty line
            break;  // i not incremented
        else
            sayings[i] = temp;  // overloaded assignment
    }
    int total = i;  // total # of lines read

    if (total > 0) {
        cout << "Here are your sayings:\n";
        for (i = 0; i < total; ++i)
            cout << sayings[i] << "\n";
        // use pointers to keep track of shortest, first strings
        String *shortest = &sayings[0];    // initialize to first object
        String *first = &sayings[0];
        for (i = 1; i < total; ++i) {
            if (sayings[i].length() < shortest->length())
                shortest = &sayings[i];
            if (sayings[i] < *first)    // compare values
                first = &sayings[i];    // assign address
        }
        cout << "Shortest saying:\n" << *shortest << endl;
        cout << "First alphabetically:\n" << *first << endl;
        srand(time(nullptr));
        int choice = rand() % total;    // pick index at random
        // use new to create, initialize new String object
        String *favorite = new String(sayings[choice]);
        cout << "My favorite saying:\n" << *favorite << endl;
        delete favorite;
    } else  // If total is not greater than 0
        cout << "Not much to say, eh?\n";
    cout << "Bye.\n";
    return 0;
}

/* Test #2
>> Kirt Rood
1: a friend in need is a friend indeed
2: neither a borrower nor a lender be
3: a stitch in time saves nine
4: a niche in time saves stine
5: it takes a crook to catch a crook
6: cold hands. warm heart
7:*/
